package com.lee.forum.services;

import com.lee.forum.model.Article;
import com.lee.forum.model.ArticleReply;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: lishuo
 * Date: 2024-01-30
 * Time: 1:01
 */
public interface IArticleTopCacheService {

    /**
     * 用于缓存预热
     */
    public void preloadCache();


    /**
     * 获取当前前 TopN 热榜文章列表
     * @param n 热榜文章数量
     * @return 热榜文章列表
     */
    public List<Article> getHotArticleLists(int n);

    /**
     * 获取热榜文章详情
     * @param id
     * @return
     */
    public Article getHotArticleDetail(Long id);

    /**
     * 获取热榜文章评论详情
     * @param id
     * @return
     */
    public List<ArticleReply> getHotArticleReply(Long id);

    /**
     * 用于给文章点赞时增加score
     * @param article
     * @return
     */
    public Boolean articleAddLikeCount(Article article);

    /**
     * 用于文章浏览时增加score
     * @param article
     * @return
     */
    public Boolean articleAddVisitCount(Article article);

    /**
     * 用于给文章评论时增加score
     * @param article
     * @return
     */
    public Boolean articleAddReplyCount(Article article);

    /**
     * 用于文章删除时销毁article
     * @param article
     * @return
     */
    public Boolean articleDelete(Article article);

    /**
     * 用于更新文章详情时更新article
     * @param article
     * @return
     */
    public boolean updateHotArticleDetail(Article article);

    /**
     * 定时更新topN的方法(每个小时更新一次，每10分钟刷新一次)
     */
    public void updateTopRedis();

    public void refreshTopRedis();
}
